1. iOS JS Bridge
1.1. javaScriptCore
- JS 线程安全,所有 JS 任何同步执行。
- 在哪个线程执行 JS,JS 执行的 Native 代码也在对应线程。
1.1.1. Native > JS
注册 JS 方法
JSContext *context;
[self.context evaluateScript:@"module.nativeToJS = () => {};"]
OC 调用 JS 注册的方法
JSContext *context;
JSValue *module = context[@"module"];
[module invokeMethod:@"nativeToJS" withArguments:@[]];
1.1.2. JS > Native
JSExport 方式实现
Block 方式实现
注册 Native 回调
JSContext *context;
JSValue *module = [JSValue valueWithNewObjectInContext:self.context];
[module setValue:^(id message) {} forProperty:@"jsToNative"];
context[@"module"] = module;
JS 调用 Native 注册的方法
module.jsToNative();